/**********************************************************************************\
** 文件名称: show.c
** 创建人员: YCG
** 创建日期: 2018-11-20
** 文档描述:
** 版本代号: V0.1
** 版本说明: 初始版本
\********************************************************************************/
#include "show.h"

u8 code FontLib[11] = {0xC0, 0xF9, 0x64, 0x70, 0x59, 0x52, 0x42, 0xF8, 0x40, 0x50, 0x7F}; //显示数字编码
u8 code bitnum[8]   = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
u8 CubeBuf[8]  = {0, 0, 0, 0, 0, 0, 0, 0}; //led显示内容
u8 BlinkFlag = 0, CubeBlinkMode = 0; //闪烁标志与模式

/*******************************************************************************
** 函数名称: ShowInit
** 功能描述: 初始化
** 参数说明: None
** 返回说明: None
** 创建人员: YCG
** 创建日期: 2018-11-20
********************************************************************************/
void ShowInit(void) {
    /*共阳端，设置为强上拉输出0 1*/
    P1M1 = 0x00;      //清零
    P1M0 = 0xFF;      //置1

    /*P2口输出低电平显示，设置为开漏 1 1*/
    P2M1 = 0xFF;
    P2M0 = 0xFF;

}
/*******************************************************************************
** 函数名称: ShowScan
** 功能描述: 显示扫描函数，每次调用切换一次显示，在定时器1ms中断中调用
** 参数说明: None
** 返回说明: None
** 创建人员: YCG
** 创建日期: 2018-11-20
********************************************************************************/
void ShowScan(void) {
    static u8 num = 0;
    static u8 blinkTime = 0;
    if(++blinkTime == 250) {
        BlinkFlag = ~CubeBlinkMode;     //将闪烁模式为1对应的灯关掉
    } else if(blinkTime == 500) {
        blinkTime = 0;                    //计数清零
        BlinkFlag = 0xFF;                 //将所有的灯打开
    }
    if(++num > 7) {                       //从0-7之间循环显示
        num = 0;
    }
    P2 = FontLib[CubeBuf[num]];      //送入显示数据到端口
    P1 = BlinkFlag & bitnum[num];    //选通相应的位
}

/*******************************************************************************
** 函数名称: SetCube
** 功能描述: 设置数码管的显示
** 参数说明: dat: [输入/出]  显示的数据
**			     num: [输入/出]  第几位
** 返回说明: None
** 创建人员: YCG
** 创建日期: 2018-11-20
********************************************************************************/
void SetCube(u8 dat, u8 num) {
    CubeBuf[num] = dat;         // 设置显示的数据
}

/*******************************************************************************
** 函数名称: SetCube
** 功能描述: 设置数码管的显示
** 参数说明: mode 设置哪几个灯闪烁，每一位对应一个数字，0表示都不闪
** 返回说明: None
** 创建人员: YCG
** 创建日期: 2018-11-20
********************************************************************************/
void SetCubeBlink(u8 mode) {
   CubeBlinkMode = bitnum[mode] ;
}
/********************************End of File************************************/
